package com.loveto.service;

import com.loveto.common.SoftKeyboardDetectorView;
import com.loveto.common.SoftKeyboardDetectorView.OnHiddenKeyboardListener;
import com.loveto.common.SoftKeyboardDetectorView.OnShownKeyboardListener;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class UserinfoEditAdditionalActivity extends Activity implements
View.OnClickListener{
	
	// 사용하는 변수들
	private SharedPreferences pref;
	private String inputAddtionalKind;
	private String presentText;
	private boolean isShowKeyboard;
	private SoftKeyboardDetectorView softKeyboardDetector; 
	private EditText v_edit_keyword_01;
	private EditText v_edit_keyword_02;
	private EditText v_edit_keyword_03;
	private EditText v_edit_keyword_04;
	private EditText v_edit_keyword_05;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.loveto_userinfo_edit_additional);
		
		//변수 선언
		pref = getSharedPreferences("userInfo", Activity.MODE_PRIVATE);
		v_edit_keyword_01 = (EditText) findViewById(R.id.edit_keyword_01);
		v_edit_keyword_02 = (EditText) findViewById(R.id.edit_keyword_02);
		v_edit_keyword_03 = (EditText) findViewById(R.id.edit_keyword_03);
		v_edit_keyword_04 = (EditText) findViewById(R.id.edit_keyword_04);
		v_edit_keyword_05 = (EditText) findViewById(R.id.edit_keyword_05);
		
		//전 엑티비티에서 질문 정보 받아오기
		Intent intent = getIntent();
		inputAddtionalKind = intent.getStringExtra("inputAddtionalKind");
		presentText = intent.getStringExtra("presentText");
		
		// 클릭 리스너 달기 // 버튼
		Button v_btn_save_text = (Button)findViewById(R.id.btn_save_text);
		v_btn_save_text.setOnClickListener(this);
		ImageView v_btn_save_text_under = (ImageView)findViewById(R.id.btn_save_text_under);
		v_btn_save_text_under.setOnClickListener(this);
		RelativeLayout v_btn_goto_back = (RelativeLayout)findViewById(R.id.btn_goto_back);
		v_btn_goto_back.setOnClickListener(this);
		
		//화면 뿌려주기
		setActivity();
		
		//키보드가 나왔는지 학인 처리 , AndroidManifest.xml에서 android:windowSoftInputMode 가 adjustResize 속성일 때만 가능.
		isShowKeyboard = false; //키보드 상태를 파악하기 위한
		softKeyboardDetector = new  SoftKeyboardDetectorView(this); //키보드가 나왔는지 확인하기 위한
		addContentView(softKeyboardDetector, new FrameLayout.LayoutParams(-1, -1));
		softKeyboardDetector.setOnShownKeyboard(new OnShownKeyboardListener() {
			@Override
			public void onShowSoftKeyboard() {
				isShowKeyboard = true;
				Log.d("tag", "키보드가 떴습니당~");
			}
		});
		softKeyboardDetector.setOnHiddenKeyboard(new OnHiddenKeyboardListener() {
			@Override
			public void onHiddenSoftKeyboard() {
	        	reActiveButtons(); //다시 다른 버튼들 활성화
				Log.d("tag", "키보드가 내려갔습니당~");
			}
		});
	}
	
	@Override
	public void onClick(View v) {
		switch(v.getId()) {
		case R.id.btn_save_text:
			saveAdditionalInfo();
			break;
		case R.id.btn_save_text_under:
			saveAdditionalInfo();
			break;
		case R.id.btn_goto_back:
			finish();
			break;
		}
	}
	
	//화면 아무곳이나 클릭 했을 때 처리 (키보드 나왔을 때 처리 위한)
	@Override
	public boolean dispatchTouchEvent(MotionEvent ev) {
	    switch (ev.getAction()){
	        case MotionEvent.ACTION_DOWN:
	        	if (isShowKeyboard) {
		        	InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
		        	mgr.hideSoftInputFromWindow(v_edit_keyword_01.getWindowToken(), 0);
		        	mgr.hideSoftInputFromWindow(v_edit_keyword_02.getWindowToken(), 0);
		        	mgr.hideSoftInputFromWindow(v_edit_keyword_03.getWindowToken(), 0);
		        	mgr.hideSoftInputFromWindow(v_edit_keyword_04.getWindowToken(), 0);
		        	mgr.hideSoftInputFromWindow(v_edit_keyword_05.getWindowToken(), 0);
	        	}
	            break;
	        case MotionEvent.ACTION_UP:
	            break;
	    }
	    return super.dispatchTouchEvent(ev);
	}

	private void setActivity() {
		//상단 설명 문구 변경
		String text1 = ""; 
		String text2 = "";
		String text3 = "";
		if (inputAddtionalKind.equals("characters")) {
			text1 = "나의 성격을 나타내는 말은?";
			text2 = "예) 애교 쩔어주심, 솔직함의 종결자, 약속 완전 잘지킴, 1년에 한번소심, 자존심 빼면 시체!, 내 사랑에겐 따듯하겠지ㅏ, 고양이같은 도도함, 너무 착해서 손해보는, 포스트잇 같은 붙임성, 다정한 말투, 백설공주 만큼의 순진무구함, 적당한 내숭, 똥꼬발랄";
			text3 = "성격";
		} else if (inputAddtionalKind.equals("look")) {
			text1 = "나의 외모를 나타내는 말은?"; 
			text2 = "예) 강북김혜수, 천호동조인성, 청순가련, 키만183, 도자기피부, 살인미소, 골든루저, 초콜릿복근, 콜라병몸매, 대놓고글래머, 아스팔트껌딱지가슴, 마늘쫑콧대, 탄탄한엉치라인, 힐빨없이170cm, 3D입체굴곡, 조각같은손가락, 키스를부르는입,술 술먹고보면김태희";
			text3 = "외모";
		} else if (inputAddtionalKind.equals("hobby")) {
			text1 = "나의 취미를 나타내는 말은?"; 
			text2 = "예) 십자수, 미드시청, 여행, 영화관람, 독서 온라인게임 스노우보드, 강아지와산책 그림그리기, 미네랄캐기, 야동아닌야한영화보기, 강아지랑일본어로대화, 사람뒷통수그리기, 다른커플구경하,기 근육풀릴때헬쓰장가기, 별보고이름붙이기, 블로그질, 맛집탐방";
			text3 = "취미";
		} else if (inputAddtionalKind.equals("favorite")) {
			text1 = "내가 좋아하는것을 것은?"; 
			text2 = "예) 술, 아메리카노, 아이리스, 시츄 , 월급날 비오는날, 무협소설, 신상구두, 카라, 2PM, 쾌변, 스탬프가꽉찬커피쿠폰, 진정한승리자유해진, 음흉한새벽공기, 점심시간복학생선배 돗대를넘겨주는친구, 화장이잘먹는아침, 호빵속앙금, 아다리맞는대중교통";
			text3 = "좋은것";
		} else if (inputAddtionalKind.equals("idealtype")) {
			text1 = "나의 이상형은?"; 
			text2 = "예) 잔소리없는애인, 앞머리없는긴생머리, 이프로필을읽는당신, 키다리아저씨, 20년물오른미모, 톡쏘는유머쟁이, 인내심을가진사람, 뿌잉뿌잉애교쟁이, 쫀득한밀당의소유자, 마음이따뜻한, 훤칠한 팔등신, 자신감있는능력자, 운동을좋아하는, 배려심있는사람";
			text3 = "이상형";
		}
		TextView v_text_explain_01 = (TextView) findViewById(R.id.text_explain_01);
		v_text_explain_01.setText(text1);
		TextView v_text_explain_02 = (TextView) findViewById(R.id.text_explain_02);
		v_text_explain_02.setText(text2);
		TextView v_titleText = (TextView) findViewById(R.id.titleText);
		v_titleText.setText(text3);
		
		//입력란 문구 변경
		String[] array = {""};
		if (!"".equals(presentText)) {
			array = presentText.split(", ");
		}
		for (int i=0;i < array.length;i++) {
			if (i == 0) {
				v_edit_keyword_01.setText(array[0]);
			} else if (i == 1) {
				v_edit_keyword_02.setText(array[1]);
			} else if (i == 2) {
				v_edit_keyword_03.setText(array[2]);
			} else if (i == 3) {
				v_edit_keyword_04.setText(array[3]);
			} else if (i == 4) {
				v_edit_keyword_05.setText(array[4]);
			}
		}
	}
	
	private void saveAdditionalInfo() {
		String str01 = v_edit_keyword_01.getText().toString();
		String str02 = v_edit_keyword_02.getText().toString();
		String str03 = v_edit_keyword_03.getText().toString();
		String str04 = v_edit_keyword_04.getText().toString();
		String str05 = v_edit_keyword_05.getText().toString();
		StringBuffer sb = new StringBuffer("");
		if (!"".equals(str01)) {
			sb.append(str01);
		}
		if (!"".equals(str02)) {
			if (!"".equals(sb.toString())) {
				sb.append(", ");
			}
			sb.append(str02);
		}
		if (!"".equals(str03)) {
			if (!"".equals(sb.toString())) {
				sb.append(", ");
			}
			sb.append(str03);
		}
		if (!"".equals(str04)) {
			if (!"".equals(sb.toString())) {
				sb.append(", ");
			}
			sb.append(str04);
		}
		if (!"".equals(str05)) {
			if (!"".equals(sb.toString())) {
				sb.append(", ");
			}
			sb.append(str05);
		}
		Editor editor = pref.edit();
		if (inputAddtionalKind.equals("characters")) {
			editor.putString("input_characters", sb.toString());
		} else if (inputAddtionalKind.equals("look")) {
			editor.putString("input_look", sb.toString());
		} else if (inputAddtionalKind.equals("hobby")) {
			editor.putString("input_hobby", sb.toString());
		} else if (inputAddtionalKind.equals("favorite")) {
			editor.putString("input_favorite", sb.toString());
		} else if (inputAddtionalKind.equals("idealtype")) {
			editor.putString("input_idealtype", sb.toString());
		}
		editor.commit();
		Log.d("tag","putString:" + sb.toString());
		finish();
	}
	
	//키보드 표시 유무를 false 로 만듬. 딜레이를 주지 않으면 클릭 처리가 바로 되버림.
	private void reActiveButtons() { 
		new Handler().postDelayed(new Runnable()
        {
            @Override
            public void run()
            {
            	isShowKeyboard = false;
            	Log.d("tag", "isShowKeyboard :" + isShowKeyboard);
            }
        }, 300);
	}
}
